
UMlistner=new Class({
	
	document:null,
	started:false,
	context:null,
	
	
	initialize:function(){
			
	},
	
	addMouseListener:function(){
	
	
		//aggancio i listner ai document
		this.document =this.context.window.document;
		
		this.document.addEventListener("click",this.handleEventClick,true);
		this.document.addEventListener("mouseover",this.handleEventMouseOver,true);
		this.document.addEventListener("mouseout",this.handleEventMouseOut,true);
		this.document.addEventListener("mousedown",this.handleEventMouseDown,true);	
	 },
	 removeMouseListener:function(){
	 	
	 	
		this.document.removeEventListener("mouseover",this.handleEventMouseOver,true);
		this.document.removeEventListener("mouseout",this.handleEventMouseOut,true);
		this.document.removeEventListener("click",this.handleEventClick,true);
		this.document.removeEventListener("mousedown",this.handleEventMouseDown,true);
		
	 },
	
	handleEventClick:function(e){
		//prevengo gli eventi di default
		e.stopPropagation();
      	e.preventDefault();
      	
      	// recupero l'oggetto window che contiene l'elemento target dell'evento
		e.window = e.target.ownerDocument.defaultView;
		//recupero il context associato a detta window
		var context=window.top.UChimera.getContext(e.window);
		context.getMouseListner().stopMouseCheck();
		window.top.PBrowserOverlay.getInterface().PChimeraInterface.switchButton();
		context.getFrameHighLighter().highlight(context, e.target);
		
	},
	
	handleEventMouseDown:function(e){
		e.stopPropagation();
      	e.preventDefault();
		
	},
	
	handleEventMouseOver:function(event){
		
		event.stopPropagation();
      	event.preventDefault();
      	
      	
		
		//codice per l'highlighting dell'elemento nella pagina
		
			// recupero l'oggetto window che contiene l'elemento target dell'evento
			event.window = event.target.ownerDocument.defaultView;
			//recupero il context associato a detta window
			var context=window.top.UChimera.getContext(event.window);
			//recupero l'highlighter associato a questo context e faccio partire l'highlighting
			context.getFrameHighLighter().highlight(context, event.target);
			//alert('arrivato');
		if(!this.timer)
		{
			//faccio una zozzata dichiaro il context di riferimento come variabile glabale per la funzione
			//passata in reazione al timer
			
			 this.timer=window.setTimeout(function(){
												// lo recuper nuovamente anche se gia ce lo ha 
												// disposizione nella variabile globale esterna						 	
			 									 
			 									context.getDomInspector().updateDomTree(event.target);
			 								  },100);		
		}
		else
		{
			clearTimeout(this.timer);
			this.timer=setTimeout(function(){
												
			 									context.getDomInspector().updateDomTree(event.target);
											},
			 									100);
		}
		
	},
	
	handleEventMouseOut:function(e){
		
		// recupero l'oggetto window che contiene l'elemento target dell'evento
		e.window = e.target.ownerDocument.defaultView;
		//recupero il context associato a detta window
		var context=window.top.UChimera.getContext(e.window);
		context.getFrameHighLighter().unhighlight(context);
		if(this.timer)
		{
			clearTimeout(this.timer);
		}
	},
	
	startStopMouseCheck:function(){
		
	
		
		
		if(!(this.started))
		{
			this.started=true;
			this.context.getDomInspector().resetInspector();
			this.addMouseListener();
			//costruisco l'albero che rappresenta il dom
			this.context.getDomInspector().buildDomTree(this.context.window.document,$(this.context.getDomInspector().idpanel));
		}else
		{
			
			this.stopMouseCheck();
		}
		
	},
	
	stopMouseCheck:function(){
		
		this.started=false;
		this.removeMouseListener();
	}
	
});